import { Document } from 'mongoose';
import { ISubTask } from './ISubTask';

export interface ITaskSession extends Document {
  sessionId: string;
  userId: string;
  title: string;
  description?: string;
  status: 'active' | 'completed' | 'paused' | 'archived';
  priority: 'low' | 'medium' | 'high' | 'urgent';
  tags: string[];
  // 子任务列表
  subTasks: ISubTask[];
  // 任务整体进度（基于子任务计算）
  overallProgress: number; // 0-100
  metadata: {
    createdBy: string;
    lastModifiedBy?: string;
    originalMessageId?: string;
    messageType?: string;
    estimatedDuration?: number; // 分钟
    actualDuration?: number;
    complexity: 'simple' | 'medium' | 'complex';
    // 子任务统计
    subTaskStats: {
      total: number;
      completed: number;
      inProgress: number;
      pending: number;
      cancelled: number;
    };
  };
  createdAt: Date;
  updatedAt: Date;
  completedAt?: Date;
  // 关联的消息数量（冗余字段，提升查询性能）
  messageCount: number;
  // 最后一条消息时间（冗余字段）
  lastMessageAt?: Date;
}


/**
 * 用于创建新TaskSession的数据结构
 * 不包含Mongoose自动生成的字段
 */
export type TaskSessionCreationData = Pick<
  ITaskSession,
  'sessionId' | 'userId' | 'title' | 'status' | 'priority' | 'tags' | 'description'
> & {
  metadata: Pick<ITaskSession['metadata'], 'createdBy' | 'originalMessageId' | 'messageType' | 'complexity' | 'subTaskStats'> &
            Partial<Pick<ITaskSession['metadata'], 'estimatedDuration'>>;
};